(function(window){
	var u = {};
	
	/**
     * table交互声明
     * @type {{}}
     */
    var vues = {};//map
	
    /**
     * 初始化treetable
     * @param url 数据地址
     * @param id table主键（唯一）
     * @param func 方法
     * @column n列显示展开(0为第一列)
     * @add 追加事物参数
     * @isLoading 是否需要遮罩层
     * @loadingId 遮罩层区域id
     */
	u.addTreeTable = function(url, id, func, column, add, isLoading, loadingId){
		//遮罩层
		if(isLoading){
			$(loadingId).mLoading("show");
		}
		
		var elSel = "div[_table=" + id.substr(1) + "]";
		var oldUrl = url;
		var el = $(elSel).get(0);
		if (column == undefined || column == null) {
			column = 0;
		}
		var data = {
			page: null,
			size: 10
		};
		var vue = new Vue({
			el: el,
			data: data,
			methods: {
				/**
                 * 设置数据
                 * @param obj
                 */
                setPage: function (obj) {
                    this.page = obj;
                },
                custom: func,
                expand: function(item,e){
                	
                	var el = e.target;
                	var elTr = "tr[data-tt-parent-id=" + item.guid + "]";
                	var clazz = $(el).attr('class');
                	var parentClazz = $(el).parent().parent().attr("class");
               	    if(clazz.indexOf("fa-caret-right")>0){
    	    			$(el).removeClass("fa-caret-right");
    	    			$(el).addClass("fa-caret-down");
    	    			if(parentClazz != undefined && parentClazz != null){
    	    				$(elTr).addClass(parentClazz);
    	    			}
    	    			$(elTr).addClass(item.guid);
    	    			$(elTr).show();
    	    		}else {
    	    			$(el).removeClass("fa-caret-down").addClass("fa-caret-right");
    	    			$("."+item.guid).hide();
    	    			$("."+item.guid).find(".fa-caret-down").removeClass("fa-caret-down").addClass("fa-caret-right");
    	    		}
                	
                },
                refreh: function(){
                	this.resetUrl();
                },
                /**
                 * 还原初始Url
                 */
                resetUrl: function () {
                    url = oldUrl;
                    loadData();
                }
			}
		});
		
		vues[id] = vue;//table传递
        /**
         * 加载数据
         * @param pageNo
         * @param pageSize
         */
        function loadData() {
            if (url) {
                $byking.getJSONWithToken(url, function (data) {
                    vue.setPage(data.data);
                    if(isLoading){
                    	$(loadingId).mLoading("hide");
                    }
                },function(data){
                	layer.msg(data.responseJSON.message, {icon:5});
                	if(data.responseJSON.code == "9001"){
                		window.location.href = $hostconfig.rootpath+"/page/login.html";
                	}
                });
            }
        }
		
		loadData();
	};
	
	/**
     * 获取某个Vue，用于页面交互
     * @param id tableId
     * @returns {*}
     */
    u.getVue = function (id) {
        return vues[id];
    };
    
    /**
     * setVue
     * @param id
     * @param vue
     */
    u.setVue = function (id, vue) {
        vues[id] = vue;
    };
	
	window.$treeTable = u;
})(window)